home *** CD-ROM | disk | FTP | other *** search
Wrap
/********************************************************/ /* Player PRO 5.0 -- Music Driver EXAMPLE To use with MADLibrary 5.x for Think C & CodeWarrior Antoine ROSSET 16 Tranchees 1206 GENEVA SWITZERLAND FAX: (+41 22) 346 11 97 PHONE: (+41 79) 203 74 62 Email: rosset@dial.eunet.ch */ /********************************************************/ #include "RDriver.h" MADDriverRec *MADDriver; MADMusic *Music; MADLibrary *MADLib; /*****************************/ /****** ERROR FUNCTION *******/ /*****************************/ void MyDebugStr( short, Ptr, Ptr) { } /*****************************/ /****** MAIN FUNCTION ********/ /*****************************/ void main( void) { DialogPtr TheDia; Handle itemHandle; Rect itemRect; short itemType, i, itemHit; Handle mySound[ 4]; // my 4 sound resource /* Initialisation de la toolbox */ InitGraf( &qd.thePort); InitFonts(); InitWindows(); TEInit(); InitMenus(); InitCursor(); MaxApplZone(); /******************************************/ /*** Load and prepare my sound resource ***/ /******************************************/ for( i = 0 ; i < 4; i++) { mySound[ i] = GetResource( 'snd ', 128 + i); DetachResource( mySound[ i]); HLock( mySound[ i]); // VERY IMPORTANT !!!!!! } /*******************************************************************************************/ /****** MAD Library Initialisation : choose the best driver for the current hardware ******/ /*******************************************************************************************/ { MADDriverSettings init; OSErr err; err = MADInitLibrary("", false, &MADLib); if( err) DebugStr("\pMADInitLibrary Err"); MADGetBestDriver( &init); err = MADCreateDriver( &init, MADLib, &MADDriver); if( err) DebugStr("\pMADCreateDriver Err"); } /***************************************************/ /*** Open MADH Resource ID 3214 and play it ! **/ /***************************************************/ if( MADLoadMusicRsrc( &Music, 'MADI', 3214) != noErr) DebugStr("\pMADLoadMusicRsrc Err"); MADAttachDriverToMusic( MADDriver, Music); MADChangeTracks( MADDriver, Music->header->numChn + 2); // Add 2 tracks for sound effects ! You need to call this function AFTER MADAttachDriverToMusic if( MADStartDriver( MADDriver) != noErr) DebugStr("\pMADStartDriver Err"); /******************************************/ /*** Open my dialog ***/ /******************************************/ TheDia = GetNewDialog( 128,0L, (WindowPtr) -1L); SetPort( TheDia); do { ModalDialog( 0L, &itemHit); switch( itemHit) { case 2: GetDialogItem( TheDia, 2, &itemType, &itemHandle, &itemRect); SetControlValue( (ControlHandle) itemHandle, !GetControlValue( (ControlHandle) itemHandle)); if( GetControlValue( (ControlHandle) itemHandle)) MADPlayMusic( MADDriver); else { MADStopMusic( MADDriver); MADCleanDriver( MADDriver); } break; case 3: MADPlaySndHandle( MADDriver, mySound[ 0], Music->header->numChn, 48); // C 3 = 48 break; case 4: MADPlaySndHandle( MADDriver, mySound[ 1], Music->header->numChn + 1, 0xFF); // 0xFF = normal rate (sample rate) break; case 5: MADPlaySndHandle( MADDriver, mySound[ 2], Music->header->numChn, 36); // at C 2 = 36 break; case 6: MADPlaySndHandle( MADDriver, mySound[ 3], Music->header->numChn + 1, 60); // at C 4 = 60 break; } }while( itemHit != 1); DisposeDialog( TheDia); MADStopMusic( MADDriver); // Stop the music MADStopDriver( MADDriver); // Stop the driver MADDisposeMusic( &Music); // Clear music MADDisposeDriver( MADDriver); // Dispose driver MADDisposeLibrary( MADLib); // Close Music Library for( i = 0 ; i < 4; i++) { HUnlock( mySound[ i]); DisposeHandle( mySound[ i]); } }